/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.com.cotelasa.scp.controlador;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.log4j.Logger;
import org.springframework.context.annotation.Scope;
import pe.com.cotelasa.common.controlador.MBGenerico;
import pe.com.cotelasa.scp.common.IObserver;
import pe.com.cotelasa.scp.common.ISubject;
import pe.com.cotelasa.scp.controlador.backingBean.BKComponenteAddVentaDetalleNC;
import pe.com.cotelasa.scp.dominio.excepcion.ServiceException;
import pe.com.cotelasa.scp.dominio.service.IServicioTipoDocumento;
import pe.com.cotelasa.scp.entidad.TipoDocumento;
import pe.com.cotelasa.scp.entidad.UnidadMedidaComp;

/**
 *
 * @author Jorge
 */
@SuppressWarnings("serial")
@Named(value = "MBComponenteAddVentaDetalleNC")
@Scope("request")
public class MBComponenteAddVentaDetalleNC extends MBGenerico implements ISubject, Serializable {
    
    private static Logger logger = Logger.getLogger(MBComponenteAddVentaDetalleNC.class);
    @Inject
    private BKComponenteAddVentaDetalleNC bkComponenteAddVentaDetalleNC;
    @Inject
    private IServicioTipoDocumento servicioTipoDocumento;
    
    public void cargaInicial() {
        try {
            bkComponenteAddVentaDetalleNC.setNumero("000000");
            bkComponenteAddVentaDetalleNC.setSerie("000");
            bkComponenteAddVentaDetalleNC.setDescripcion("");
            bkComponenteAddVentaDetalleNC.setFecha(new Date());
            bkComponenteAddVentaDetalleNC.setListaDocumentos(new ArrayList<TipoDocumento>(servicioTipoDocumento.listarTipoDocumentoActivos()));
        } catch (ServiceException e) {
            mostrarError("Ocurrieron algunos problemas al actualizar la informacion. Vuelva a intentar.");
            logger.error(e.getMessage(), e);
        }
    }
    
    public void clearObserver() {
        bkComponenteAddVentaDetalleNC.getObservers().clear();
    }
    
    @Override
    public void addObserver(IObserver observador) {
        bkComponenteAddVentaDetalleNC.addObservers(observador);
    }
    
    @Override
    public void notificarObservadores() {
        for (IObserver observer : bkComponenteAddVentaDetalleNC.getObservers()) {
            observer.actualizarObservador(bkComponenteAddVentaDetalleNC);
        }
        
    }
}
